// ProjectName: go-learn-demo
// PackageName: _1_basic
// Description:
// Author: hy.bai
// Date: 2025-08-19 星期二 11:44

package xormybxb

import (
	"fmt"
	_ "github.com/go-sql-driver/mysql"
	"log/slog"
)

// 更新操作
func TestUpdate() {
	// 初始化Mysql数据库引擎
	InitEngine()

	val := &User{
		Username: "ybxb-" + currentTimeStr,
		Password: "666666",
		Age:      20,
	}

	result, err := MysqlEngine.Table("t_user").ID(2).Update(val)
	if err != nil {
		slog.Error("更新数据失败,原因是:", err.Error())
	}
	fmt.Println("更新结果:", result)
}

func TestUpdateByMap() {
	// 初始化Mysql数据库引擎
	InitEngine()

	val := map[string]interface{}{ // 当传入的为Map类型时，key为数据库Column的名字，value为要更新的内容
		"username": "abc-" + currentTimeStr,
		"password": "999",
		"age":      30,
	}
	result, err := MysqlEngine.Table(&User{}).Table("t_user").ID(3).Update(val)
	if err != nil {
		slog.Error("更新数据失败,原因是:", err.Error())
	}
	fmt.Println("更新结果:", result)
}

// 更新执行的列
func TestBatchUpdate() {
	// 初始化Mysql数据库引擎
	InitEngine()
	val := &User{
		Username: "xyz",
		Age:      20,
	}
	result, err := MysqlEngine.Table("t_user").Cols("age").ID(3).Update(val)
	if err != nil {
		slog.Error("数据更新失败,原因是:", err.Error())
	}
	fmt.Println("操作结果:", result)
}
